﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using WCFAccesos.Dominio;

namespace WCFAccesos.Persistencia
{
    public class GROpcionDAO
    {
        public GROpcion Obtener(int codigo)
        {
            GROpcion opcionEncontrada = null;
            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand("GROpcion_Obtener", con))
                {
                    com.CommandType = CommandType.StoredProcedure;
                    com.Parameters.Add(new SqlParameter("@iCodOpcion", codigo));
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {                        
                            opcionEncontrada = CargarOpcion(resultado);                            
                    }
                }
            }
            if (opcionEncontrada == null)
                opcionEncontrada = new GROpcion();

            return opcionEncontrada;
        }

        public List<GROpcion> Listar() {

            List<GROpcion> opciones = null;
            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand("GROpcion_Listar", con))
                {
                    com.CommandType = CommandType.StoredProcedure;
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        while (resultado.Read())
                        {                            
                            opciones.Add(CargarOpcion(resultado));
                        }                        
                    }
                }
            }
            return opciones;
        }

        private GROpcion CargarOpcion(IDataReader resultado) {
            GROpcion opcion = new GROpcion()
            {
                iCodOpcion = Convert.ToInt32(resultado["iCodOpcion"].ToString()),
                vNomOpc = (string)resultado["vNomOpc"],
                bActivoOpc = Convert.ToBoolean(resultado["bActivoOpc"].ToString()),
                iCodUsu = Convert.ToInt32(resultado["iCodUsu"].ToString()),
                vNomTer = (string)resultado["vNomTer"],
                dtFecAct = Convert.ToDateTime(resultado["dtFecAct"].ToString())
            };
            return opcion;
        }


    }
}